package com.ilearn.iodata.iolingo.service.processor.core.converter;

import com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api.GenericAssociationPath;
import com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api.GenericEntityType;
import org.apache.olingo.server.api.ODataApplicationException;

import javax.persistence.Tuple;
import java.util.List;
import java.util.Map;

public interface GenericExpandResult { // NOSONAR

  String ROOT_RESULT_KEY = "root";

  GenericExpandResult getChild(final GenericAssociationPath associationPath);

  Map<GenericAssociationPath, GenericExpandResult> getChildren();

  Long getCount(final String string);

  GenericEntityType getEntityType();

  List<Tuple> getResult(final String key);

  Map<String, List<Tuple>> getResults();

  boolean hasCount();

  void convert(final GenericTupleChildConverter converter) throws ODataApplicationException;

}